package Clases;

import java.net.*;
import java.io.*;

public class ChatClient {
    
    private static String check;
	private static Socket socket;

	public static void main(String[] args) {
	
	try
	    {
		
		String IP="";
		boolean valide=true;
		//On doit donner comme arrgument l'adresse IP du chat
		if(args.length<1)
		    valide=false;
	        
		if(!valide)
		    System.out.println("Vous devez introduire l'adresse IP multidistribution du chat");
		   
		else{
		    
		    BufferedReader teclado=new BufferedReader(new InputStreamReader(System.in));
		    System.out.print("Introduisez votre nickname:");
		    String nickname=teclado.readLine();
		    String line;
		    String asunto="";
		    setCheck("");
		    String sujet="";
		    boolean usado=false;
		    
		    IP=args[0];
		    socket = new Socket(IP,8777);
		    OutputStream out = socket.getOutputStream();
		    InputStream in = socket.getInputStream();
		    BufferedReader	entrada = new BufferedReader(new InputStreamReader(in));
		    PrintStream salida = new PrintStream(out);
		    
		    //On envoie HELLO nickname au serveur
		    salida.println("HELLO "+nickname);
		    //System.out.println("Hello nickname enviado");
		    
		    //on verifie ce qu'on a recu du serveur
		    //Si le nick etait utilise, on va dire ca et sortir
		    if((setCheck(entrada.readLine())).equals("HELLO NOK"))
			{
			    System.out.println("Ce nick est deja utilise");
			    usado=true;
			    
			}
		    //Si le nick etait valide, on commence
		    if(!usado){
			//Si on recoit "asunto", on doit donner un sujet au chat
			if((sujet=entrada.readLine()).equals("Asunto")){
			    System.out.print("Introduisez un sujet pour votre chat: ");
			    asunto=teclado.readLine();
			    salida.println(asunto);
			}
			//Sinon, on imprime le sujet du chat
			else
			    System.out.println(sujet);
			
			
			//On commence un ClientThread, qui va lire et imprimer tous les mesages
			// que le serveur nous envoie
			ClientThread remot = new ClientThread(salida,entrada,nickname);
			remot.start();
			
			//On attend des messages du client, jusqu'a ce qu'il veut quitter
			while (!(line=teclado.readLine()).equals("quit"))
			    { 
				//System.out.print(">>");
				salida.println(nickname + " dit: " + line);
				
			    } 
			
			salida.println("quit");
		    }
		}
	    }catch (IOException ex)
		{		
		    ex.printStackTrace();
		}
	
    }

	public static String getCheck() {
		return check;
	}

	public static String setCheck(String check) {
		ChatClient.check = check;
		return check;
	}
    
}